#ifndef _STACK_H_
#define _STACK_H_

#include "Object.h"

namespace MySTL
{

template < typename T>
class Stack : public Object
{
public:
	Stack() {}
	virtual bool push(const T& value) = 0;
	virtual T pop() = 0;
	virtual T& top() = 0;
	virtual const T& top() const = 0;
	virtual void clear() = 0;
	virtual int length() const = 0;

protected:
	Stack(const Stack& obj);
	Stack& operator =(const Stack& obj);
};

}

#endif